package L623;

/**
 * @program: javase
 * @description:
 * @author: luolidong
 * @create: 2021-06-23 14:44
 * @version: 1.0
 */
public class Demo2 {
    public int cuttingRope(int n) {
        //dp[i]表示i长度可以剪掉的最大乘积
        int[] dp = new int[n + 1];
        dp[2] = 1;
        for(int i = 3; i < n + 1; i++){
            for(int j = 2; j < i; j++){
                //因为要循环取最大值
                //j表示每次减多少，
                //只减一次j，i-j长度不减。长度：j*(i-j)
                //i-j长度继续剪。长度：j*dp[i-j]
                dp[i] = Math.max(dp[i], Math.max(j * (i - j), j * dp[i - j]));
            }
        }
        return dp[n];
    }

    public static void main(String[] args) {
        new Demo2().cuttingRope(8);
    }
}
